java中Comparator比较器顺序问题,源码分析 您所在的位置:网站首页 java comparator的返回值 java中Comparator比较器顺序问题,源码分析

java中Comparator比较器顺序问题,源码分析

2023-08-20 10:52| 来源: 网络整理| 查看: 265

提示:

分析过程是个人的一些理解,如有不对的地方,还请大家见谅,指出错误,共同学习。

源码分析过程中由于我写的注释比较啰嗦、比较多,导致文中源代码不清晰,还请一遍参照源代码,一遍参照本文进行阅读。

 

原理:先将集合中的部分元素排列好顺序。  然后再将剩余的元素用二分法插入到已排好序(二分法的使用是建立在已排好序的前提下)的元素中去。然后得到排好序的集合。

测试代码:

1 public class TestLambda { 2 public static List list = Arrays.asList("my","name","is","lambda","mzp"); 3 public static List integerList = Arrays.asList(1,2,15,6,9,13,7); 4 5 public static void main(String[] args) { 6 System.out.println("排序前:"); 7 printList(integerList); 8 oldIntegerSort(); 9 System.out.println("\noldSort排序后:"); 10 printList(integerList); 11 } 12 13 14 /** 15 * @Author maozp3 16 * @Description: 对String类型的lis就行排序。使用老方法(外部比较器Comparator) 17 * @Date: 14:51 2019/7/5 18 * @Param [] 19 * @return void 20 **/ 21 public static void oldIntegerSort(){ 22 //排序(匿名函数) 23 Collections.sort(integerList, new Comparator(){ 24 //使用新的排序规则。比较器排序。 25 // 原理,先确定部分元素的顺序(升序或是降序),然后把剩余的元素通过"二分插入"进行排序。 26 @Override 27 public int compare(Integer a, Integer b) { //源码中第一个入参(a)是数组靠后面的数,第二个入参(b)是数组靠前面的数(比如这里:a=2,b=1) 28 if(a


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有